package com.redstars.generate.service;

import com.redstars.generate.vo.SysGenerateTemplateVo;
import com.redstars.generate.vo.SysPreviewFileVo;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.zip.ZipOutputStream;

/**
 * @author : zhouhx
 * @date : 2022/10/18 15:19
 */
public interface SysGeneratorService {

    /**
     *
     * @author zhuohx
     * @description 生成代码
     * @parms  [tableIds, response]
     * @return void
     * @throws
     * @date 2022/10/18 15:21
     */
    void download(String tableIds, HttpServletResponse response) throws IOException, Exception;

    /**
     *
     * @author zhuohx
     * @description 生成zip文件
     * @parms  [tableId, zip]
     * @return void
     * @throws
     * @date 2022/10/18 15:22
     */
    void downloadCode(Long tableId, ZipOutputStream zip);

    /**
     *
     * @author zhuohx
     * @description 获取表渲染的数据模型
     * @parms  [tableId]
     * @return java.util.Map<java.lang.String,java.lang.Object>
     * @throws
     * @date 2022/10/18 15:24
     */
    Map<String, Object> getDataModel(Long tableId);

    /**
     *
     * @author zhuohx
     * @description 测试模板内容
     * @parms  [query]
     * @return java.lang.String  响应内容
     * @throws
     * @date 2022/11/7 13:41
     */
    String test(SysGenerateTemplateVo vo);

    /**
     *
     * @author zhuohx
     * @description 生成代码（自定义目录）
     * @parms  [tableIds]
     * @return void
     * @throws
     * @date 2022/12/12 14:51
     */
    void generatorCode(Long[] tableIds);

    /**
     *
     * @author zhuohx
     * 代码预览
     * @parms  [talbeId]
     * @return java.util.List<com.redstars.generate.vo.SysPreviewFileVo>
     * @throws
     * @date 2022/12/21 14:46
     */
    List<SysPreviewFileVo> preview(Long talbeId);
}
